package com.lsl.proxy_pattern.dynamicproxy;

import com.lsl.proxy_pattern.dynamicproxy.RealSubject.UsbKingFactory;
import com.lsl.proxy_pattern.dynamicproxy.Subject.UsbSell;
import com.lsl.proxy_pattern.dynamicproxy.handler.MyHandler;


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @author liusl104
 */
public class Test {
    public static void main(String[] args) {
        /**
         *  创建代理对象 使用Proxy
         */
        //1.创建目标对象
        UsbSell usbSell = new UsbKingFactory();
        //2.创建InvocationHandler对象
        InvocationHandler invocationHandler = new MyHandler(usbSell);
        //3.创建代理对象
        UsbSell proxy = (UsbSell) Proxy.newProxyInstance(usbSell.getClass().getClassLoader(), usbSell.getClass().getInterfaces(), invocationHandler);
        //4.通过代理执行方法
        float price = proxy.sell(2);
        System.out.println("通过动态代理销售的U盘价格为" + price);
    }
}
